package com.cmc.cloud.cmclink.doc.service;

import com.cmc.cloud.cmclink.doc.entity.BlnoRulePbcodeDO;
import com.cmc.cloud.cmclink.doc.vo.blnorulepbcodevo.BlnoRulePbcodeCreateReqVO;
import com.cmc.cloud.cmclink.doc.vo.blnorulepbcodevo.BlnoRulePbcodePageReqVO;
import com.cmc.cloud.cmclink.doc.vo.blnorulepbcodevo.BlnoRulePbcodeRespVO;
import com.cmc.cloud.cmclink.doc.vo.blnorulepbcodevo.BlnoRulePbcodeUpdateReqVO;
import com.cmes.framework.common.pojo.PageResult;

import javax.validation.Valid;
import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * 接货地提单号两位码 Service 接口
 *
 * @author 招商轮船-管理员
 */
public interface BlnoRulePbcodeService {

    /**
     * 创建接货地提单号两位码
     *
     * @param createReqVO 创建信息
     */
    void createBlnoRulePbcode(@Valid BlnoRulePbcodeCreateReqVO createReqVO);

    /**
     * 更新接货地提单号两位码
     *
     * @param updateReqVO 更新信息
     */
    void updateBlnoRulePbcode(@Valid BlnoRulePbcodeUpdateReqVO updateReqVO);

    /**
     * 删除接货地提单号两位码
     *
     * @param id 编号
     */
    void deleteBlnoRulePbcode(Long id);

    /**
     * 获得接货地提单号两位码
     *
     * @param id 编号
     * @return 接货地提单号两位码
     */
    BlnoRulePbcodeDO getBlnoRulePbcode(Long id);

    /**
     * 获得接货地提单号两位码列表
     *
     * @param ids 编号
     * @return 接货地提单号两位码列表
     */
    List<BlnoRulePbcodeDO> getBlnoRulePbcodeList(Collection<Long> ids);

    /**
     * 获得接货地提单号两位码分页
     *
     * @param pageReqVO 分页查询
     * @return 接货地提单号两位码分页
     */
    PageResult<BlnoRulePbcodeRespVO> getBlnoRulePbcodePage(BlnoRulePbcodePageReqVO pageReqVO);

    /**
     * 获得接货地提单号两位码分页
     *
     * @param porCodes 数组
     * @return 接货地提单号两位码分页
     */
    Map<String, String> findRuleByPorCodes(List<String> porCodes);

}
